package utils

import (
	"github.com/dop251/goja"
)

func GetCallable(scrtip string, function string) (goja.Callable, *goja.Runtime) {
	vm := goja.New()
	_, err := vm.RunString(scrtip)
	if err != nil {
		return nil, nil
	}

	f, ok := goja.AssertFunction(vm.Get(function))
	if !ok {
		return nil, nil
	}
	return f, vm
}

// // const SCRIPT = `
// // function sum(a, b) {
// //     return +a + b;
// // }
// // `

// vm := goja.New()
// _, err := vm.RunString(SCRIPT)
// if err != nil {
//     panic(err)
// }
// sum, ok := goja.AssertFunction(vm.Get("sum"))
// if !ok {
//     panic("Not a function")
// }

// res, err := sum(goja.Undefined(), vm.ToValue(40), vm.ToValue(2))
// if err != nil {
//     panic(err)
// }
// fmt.Println(res)
// // Output: 42
